package com.woniuxy.amusementparkos.controller.lsy;

import java.util.Arrays;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.woniuxy.amusementparkos.dto.lvd.TableDataDto;
import com.woniuxy.amusementparkos.entity.lsy.WriststarpInfoCondition;
import com.woniuxy.amusementparkos.entity.wyh.WristStrap_Info;
import com.woniuxy.amusementparkos.service.lsy.WriststrpInfoBackUpService;

import lombok.extern.slf4j.Slf4j;

/**
* @author Muzi
* 后台管理腕带租赁信息页面 包括：删 、改、查 ，后台新增方法没有意义
* 2020年5月4日下午6:36:12
*/
@Controller
@RequestMapping("/manageInfo")
@Slf4j
public class WriststrpInfoBackUpController {
	
	@Autowired
	private WriststrpInfoBackUpService wriststrpInfoBackUpService;
	
	@RequestMapping("/deleteOne")
	@ResponseBody
	public TableDataDto<WristStrap_Info> deleteWristStrapInfo(Integer info_id){
		// 创建数据容器
		TableDataDto<WristStrap_Info> result = new TableDataDto<>();
		// 捕获异常 异常处理
		try {
			wriststrpInfoBackUpService.deleteWriststrpInfo(info_id);
		} catch(RuntimeException e) {
			// 设置异常操作码
			result.setCode(3);
			// 设置前端提示信息
			result.setMsg("删除失败，请刷新后重试");
			// 记录日志
			log.warn("WriststrpInfoBackUpController的deleteWristStrapInfo操作发生异常："+e);
			return result;
		} 
		// 记录正常操作日志
		log.info("腕带租赁信息被删除，被删除的编号是："+info_id);
		// 设置成功操作响应码和提示信息
		result.setCode(1);
		result.setMsg("删除成功！");
		return result;
	}
	
	@ResponseBody
	@RequestMapping("/updateOne")
	public TableDataDto<WristStrap_Info> updateWristStrapInfo(WristStrap_Info wristStrapInfo){
		// 创建数据容器
		TableDataDto<WristStrap_Info> result = new TableDataDto<>();
		try {
			// 捕获异常 异常处理
			wriststrpInfoBackUpService.updateWristStrapInfo(wristStrapInfo);
		} catch (RuntimeException e) {
			// 异常操作码
			result.setCode(3);
			// 前端提示的信息
			result.setMsg("修改失败，请检查提交的数据是否合法");
			// 记录日志
			log.warn("WriststrpInfoBackUpController的updateWristStrapInfo操作发生异常："+e);
			return result;
		}
		// 记录正常操作日志
		log.info("腕带租赁信息更新！更新后是："+wristStrapInfo);
		// 设置成功操作码，提示信息等
		result.setCode(1);
		result.setMsg("修改成功！");
		return result;
	}
	
	
	/**
	 * 通过条件和分页查询所有腕带出组信息
	 * @param condifiotn
	 * @param page
	 * @param limit
	 * @return
	 */
	@ResponseBody
	@RequestMapping("/query")
	public TableDataDto<WristStrap_Info> getAllByConditionAndPage(WriststarpInfoCondition condition,Integer page,Integer limit){
		// 创建数据容器
		TableDataDto<WristStrap_Info> result = new TableDataDto<>();
		// 查询符合条件的腕带出租信息
		List<WristStrap_Info> infos = wriststrpInfoBackUpService.getAllByConditionAndPage(condition,page,limit);
		// 计数符合条件的信息总量
		Long count = wriststrpInfoBackUpService.countAllByConditions(condition);
		// 设置响应码、总条数、数据
		result.setCode(0);
		result.setCount(count);
		result.setData(infos);
		return result;
	}
	
	
	/**
	 * 进入后台腕带出租信息管理
	 * @return
	 */
	@RequestMapping("/show")
	public ModelAndView show() {
		return new ModelAndView("lsy/manageInfo");
	}
	
	@RequestMapping("/deletelist")
	@ResponseBody
	public TableDataDto<Integer> deleteList(Integer[] id){
		// 创建对象
    	TableDataDto<Integer> result = new TableDataDto<>();
    	try {
			wriststrpInfoBackUpService.deleteWriststrpInfoList(id);
		} catch(RuntimeException e) {
			// 设置异常操作码
			result.setCode(3);
			// 设置前端提示信息
			result.setMsg("删除失败，请刷新后重试");
			// 记录日志
			log.warn("WriststrpInfoBackUpController的deleteWristStrapInfo操作发生异常："+e);
			return result;
		} 
    	result.setCode(1);
    	result.setMsg("批量删除成功，一共删除"+id.length+"条腕带信息");
    	log.warn("批量删除腕带信息，他们的编号是："+Arrays.toString(id));
		return result;
		
	}
	
	/**
     * 控制器统一异常处理器
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public TableDataDto<Integer> resolveException(Exception e){
    	// 创建对象
    	TableDataDto<Integer> result = new TableDataDto<>();
    	// 设置参数
    	result.setMsg("操作异常，请联系管理员");
    	// 记录日志
    	log.error("WriststrpInfoBackUpController发生严重异常："+e.getMessage()+e);
    	// 设置状态
		result.setCode(4);
    	return result;
    }
}
